package com.atguigu.yygh.hosp.controller;

import com.atguigu.yygh.hosp.result.R;
import com.atguigu.yygh.hosp.service.HospitalService;
import com.atguigu.yygh.model.hosp.Hospital;
import com.atguigu.yygh.vo.hosp.HospitalQueryVo;
import io.swagger.models.auth.In;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Map;

/**
 * 查询医院列表
 * nginx会将包含hosp的转发到---医院微服务
 * 如果是/dict就会被转发到---数据字典微服务
 */
//@CrossOrigin
@RestController
@RequestMapping("/admin/hosp")
public class HospitalController {

    @Autowired
    HospitalService hospitalService;

    /**
     * 医院详情:根据医院的id查询 hospital+bookingRole
     */
    @GetMapping("/getHospById/{id}")
    public R getHospById(@PathVariable("id") String id){
       Map map = hospitalService.getHospById(id);
        //map={hospital:xxxx,bookingRule:xxxx}
        return R.ok().data("item",map);
    }


    /**
     * 医院的上线和下线
     * 根据医院的主键修改status值,status的取值范围是0-1
     */
    @GetMapping("/updateStatus/{id}/{status}")
    public R updateStatus(@PathVariable("id") String id,@PathVariable("status") Integer status){
        hospitalService.updateStatus(id,status);
        return R.ok();
    }

    /**
     *   后台管理系统查询医院列表
     *   条件+分页
     *   返回当前页的结果集+总记录数
     */
    @PostMapping("/selectPage/{pageNum}/{pageSize}")
    public R selectPage(@PathVariable Integer pageNum,@PathVariable Integer pageSize,@RequestBody HospitalQueryVo hospitalQueryVo){


        //从Mongodb中查询医院列表(Mongodb的分页查询返回的Page对象)
        Page<Hospital> page = hospitalService.selectPage(pageNum,pageSize,hospitalQueryVo);

        //当前页结果集
        List<Hospital> content = page.getContent();

        //总记录数
        long totalElements = page.getTotalElements();
        return R.ok().data("list",content).data("total",totalElements);
        //return R.ok().data("list",content).data("total",totalElements).data("pages",page.getTotalPages());
    }
}
